#include <stdio.h>
#include <string.h>
#include <pthread.h>
#include <unistd.h>
#include <stdlib.h>

static void print_ids(const char * info) {
    /*  
     * int pthread_self(void);
     *  返回值
     *  当前线程的标识
     *  */
    pthread_t  tid = pthread_self();
    printf("%s tid [0x%04x]\n", info, (unsigned int)tid & 0xffff);
}

static void * thread_function(void * arg) {
    print_ids("sub thread:");
    return NULL;
}

int main() {
    pthread_t ntid;

    /*
     * int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
     *      void *(*start_routine) (void *), void *arg);
     *  参数
     *  thread          新创建线程的标识
     *  attr            设置线程属性（如线程栈大小），NULL创建默认属性的线程
     *  start_routine   线程运行函数
     *  arg             运行函数的参数
     *
     *  返回值
     *  成功则返回0，否则返回出错误码
     */
    int ret = pthread_create(&ntid, NULL, thread_function, NULL);
    if (0 != ret) {
        printf("can't create thread: %s\n", strerror(ret));
        exit(-1);
    }

    print_ids("main thread:");

    sleep(1);
    
    return 0;
}

